package com.example.duihua.mapper;

import com.example.duihua.entity.Conversation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ConversationMapper {
    
    /**
     * 插入会话
     * @param conversation 会话对象
     * @return 影响的行数
     */
    int insert(Conversation conversation);
    
    /**
     * 更新会话
     * @param conversation 会话对象
     * @return 影响的行数
     */
    int update(Conversation conversation);
    
    /**
     * 根据ID和用户ID查找会话
     * @param id 会话ID
     * @param userId 用户ID
     * @return 会话对象
     */
    Conversation findByIdAndUserId(@Param("id") String id, @Param("userId") Long userId);
    
    /**
     * 查询用户的所有会话
     * @param userId 用户ID
     * @return 会话列表
     */
    List<Conversation> findByUserId(Long userId);
    
    /**
     * 查询私聊会话
     * @param userId 当前用户ID
     * @param targetId 目标用户ID
     * @return 会话对象
     */
    Conversation findPrivateConversation(@Param("userId") Long userId, @Param("targetId") Long targetId);
    
    /**
     * 查询群聊会话
     * @param userId 用户ID
     * @param groupId 群组ID
     * @return 会话对象
     */
    Conversation findGroupConversation(@Param("userId") Long userId, @Param("groupId") Long groupId);
    
    /**
     * 删除会话
     * @param id 会话ID
     * @param userId 用户ID
     * @return 影响的行数
     */
    int delete(@Param("id") String id, @Param("userId") Long userId);
    
    /**
     * 更新未读消息数量
     * @param id 会话ID
     * @param userId 用户ID
     * @param count 未读数量
     * @return 影响的行数
     */
    int updateUnreadCount(@Param("id") String id, @Param("userId") Long userId, @Param("count") int count);
    
    /**
     * 重置未读消息数量
     * @param id 会话ID
     * @param userId 用户ID
     * @return 影响的行数
     */
    int resetUnreadCount(@Param("id") String id, @Param("userId") Long userId);
}
